#ifndef BOUNDINGSPHERE_H_
#define BOUNDINGSPHERE_H_

#ifndef EIGEN_DONT_ALIGN 
#define EIGEN_DONT_ALIGN 
#endif

#ifndef EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT 
#define EIGEN_DISABLE_UNALIGNED_ARRAY_ASSERT
#endif

#include <CPMath.h>
#include <eigen3/Eigen/Dense>

namespace coolpool
{
	// Defines the bounding cylinder of the object, which is used for
	// finding the right world cell. The world cell is 2D, its a horizontal plane,
	// so for definition it is enough the center of the cylinder which is represented by
	// 2D vector and its radius.
	class BoundingCylinder
	{
	public:

		BoundingCylinder();
		BoundingCylinder(const Eigen::Vector2d & center, double radius);

		virtual ~BoundingCylinder();

		// Getters:
		const Eigen::Vector2d & getCenter() const;
		double getRadius() const;

		// Setters:
		void setCenter(const Eigen::Vector2d & center);
		void setRadius(double radius);

	private:

		Eigen::Vector2d center_;
		double radius_;

	public:
		EIGEN_MAKE_ALIGNED_OPERATOR_NEW
	};
}
#endif
